import 'dart:convert';

main() {
  // 直接创建对象
  User user = User('张三', 18, '男');
  print(user.age);

  // 后端回来的数据
  String jsonStr = '{"name": "张三", "age": 18, "gender": "男"}';
  // 把 JSON 字符串转换成 Map
  var jsonMap = json.decode(jsonStr); // 注意：json.decode 转换的结果是 Map
  print(jsonMap is Map); // is 可用于检测数据类型，类似 ArkTS 的 instanceof
  print('用户名是:${jsonMap['name']}');

  // 把 Map 转换成对象
  User user2 = User.fromJson(jsonMap);
  print(user2.name);
  print(user2.age);
  print(user2.gender);
}

// 用户信息
class User {
  late String name;
  late int age;
  late String gender;

  // 构造函数(主)，直接初始化属性值
  User(this.name, this.age, this.gender);

  // 命名构造函数(次)，传入 Map 初始化数据
  User.fromJson(Map jsonMap) {
    name = jsonMap['name'];
    age = jsonMap['age'];
    gender = jsonMap['gender'];
  }
}
